package edu.wpi.first.wpilibj.templates;

/**
 * The RobotMap is a mapping from the ports sensors and actuators are wired into
 * to a variable name. This provides flexibility changing wiring, makes checking
 * the wiring easier and significantly reduces the number of magic numbers
 * floating around.
 */
public class RobotMap {
    // For example to map the left and right motors, you could define the
    // following variables to use with your drivetrain subsystem.
    // public static final int leftMotor = 1;
    // public static final int rightMotor = 2;
    
    // If you are using multiple modules, make sure to define both the port
    // number and the module. For example you with a rangefinder:
    // public static final int rangefinderPort = 1;
    // public static final int rangefinderModule = 1;
    
    // Drive Train Motors
    public static final int
            DRIVE_FRONT_LEFT = 1,
            DRIVE_REAR_LEFT = 2,
            DRIVE_FRONT_RIGHT = 3,
            DRIVE_REAR_RIGHT = 4,
            ENC_FRONT_LEFTA = 10,
            ENC_FRONT_LEFTB = 11,
            ENC_FRONT_RIGHTA = 1,
            ENC_FRONT_RIGHTB = 2,
            ENC_REAR_LEFTA = 5,
            ENC_REAR_LEFTB = 6,
            ENC_REAR_RIGHTA = 8,
            ENC_REAR_RIGHTB = 9;

    
    // Ball Shooter Motors
    public static final int
            SHOOTER_LEFT = 5,
            SHOOTER_RIGHT = 6;
    
    // Ball Pickup Motors
    public static final int
            PICKUP_LEFT_LOWER = 8,
            PICKUP_RIGHT_LOWER = 9,
            PICKUP_UPPER = 10;

    // Bridge Pusher
    public static final int
            BRIDGE_PUSHER = 7,
            BRIDGE_ARM_LOCK = 1,
            BRIDGE_ARM_LOCK_MODULE = 2;

    // Camera Tilt and Pan Servoes
    public static final int
            CAMERA_TILT = 3,
            CAMERA_PAN = 1,
            CAMERA_DSC_SLOT = 2;
    
    // Drive Train Motor Reversals
    public static final boolean
            DRIVE_FRONT_LEFT_REVERSED = false,
            DRIVE_REAR_LEFT_REVERSED = false,
            DRIVE_FRONT_RIGHT_REVERSED = true,
            DRIVE_REAR_RIGHT_REVERSED = true;
    
    // Ball Shooter Motor Reversals
    public static final boolean
            SHOOTER_LEFT_REVERSED = false,
            SHOOTER_RIGHT_REVERSED = true;
    
    // Ball Pickup Motor Reversals
    public static final boolean
            PICKUP_LEFT_REVERSED = false,
            PICKUP_RIGHT_REVERSED = true,
            PICKUP_UPPER_REVERSED = true;

    // Bridge Pusher Motor Reversal
    public static final boolean
            BRIDGE_PUSHER_REVERSED = false;
    
    // Speed Limiting (Uses a number from 0.0 to 1.0 to set a maximum speed)
    public static double
            DRIVE_MAX_SPEED = 0.75,
            SHOOTER_MAX_SPEED = 1.0,
            PICKUP_MAX_SPEED = 1.0,
            BRIDGE_ARM_SPEED = 1.0;
}
